package org.hamcrest.collection;
import static org.hamcrest.core.IsEqual.equalTo;
import java.util.Iterator;
import org.hamcrest.Factory;
import org.hamcrest.FeatureMatcher;
import org.hamcrest.Matcher;
public class IsIterableWithSize<E> extends FeatureMatcher<Iterable<E>, Integer> {
public IsIterableWithSize(Matcher<? super Integer> sizeMatcher) {
super(sizeMatcher, "an iterable with size", "iterable size");
}
@Override
protected Integer featureValueOf(Iterable<E> actual) {
int size = 0;
for (Iterator<E> iterator = actual.iterator(); iterator.hasNext(); iterator.next()) {
size++;
}
return size;
}
@Factory
public static <E> Matcher<Iterable<E>> iterableWithSize(Matcher<? super Integer> sizeMatcher) {
return new IsIterableWithSize<E>(sizeMatcher);
}
@Factory
public static <E> Matcher<Iterable<E>> iterableWithSize(int size) {
return iterableWithSize(equalTo(size));
}
}